home *** CD-ROM | disk | FTP | other *** search
/ Quick PC 61 / Quick PC 61.iso / I386 / SASETUP.MSI / F77698_sh_alertemail.asp < prev    next >
Encoding:
Text File  |  2003-02-21  |  29.3 KB  |  1,048 lines

  1. <%@ Language=VBScript     %>
  2. <%    Option Explicit       %>
  3. <%
  4.     '------------------------------------------------------------------------- 
  5.     ' sh_alertemail.asp:    config the alertemail on server appliance
  6.     '
  7.     ' Copyright (c) Microsoft Corporation.  All rights reserved. 
  8.     '
  9.     '-------------------------------------------------------------------------
  10. %>
  11. <!-- #include virtual="/admin/inc_framework.asp" -->
  12. <!-- METADATA TYPE="typelib" UUID="CD000000-8B95-11D1-82DB-00C04FB1625D" 
  13.      NAME="CDO for Windows 2000 Type Library" -->
  14. <!-- METADATA TYPE="typelib" UUID="00000205-0000-0010-8000-00AA006D2EA4" 
  15.      NAME="ADODB Type Library" -->
  16. <%
  17.     Err.Clear
  18.     On Error Resume Next
  19.  
  20.     '
  21.     ' First check if SMTP is installed/enabled on the server. If it's not
  22.     ' redirect to the err page.
  23.     '
  24.     Dim L_ALERTEMAIL_SMTP_ERR_TEXT
  25.         
  26.     L_ALERTEMAIL_SMTP_ERR_TEXT = _
  27.                 GetLocString("alertemailmsg.dll", "&H4C00001B","")
  28.                                 
  29.     If Not SMTPIsReady Then
  30.  
  31.         Call SA_ServeFailurepage(L_ALERTEMAIL_SMTP_ERR_TEXT)
  32.         
  33.     End If
  34.  
  35.  
  36.     Dim page
  37.     Dim rc
  38.  
  39.     '
  40.     ' Define the consts
  41.     '
  42.     CONST mintVT_I4_REG_DWORD = 3
  43.     CONST mintVT_BSTR_REG_SZ = 8
  44.     CONST ADS_SECURE_AUTHENTICATION = 1
  45.     CONST CONST_CONTROL_CHECKED_STATUS = "CHECKED"    ' to "Check" the control
  46.     CONST CONST_CONTROL_NOT_CHECKED_STATUS  = ""    ' to "UnCheck" control
  47.     CONST CONST_CONTROL_DISABLE_STATUS = "DISABLED"    ' to "Disabled" the control
  48.     CONST CONST_CONTROL_NOT_DISABLE_STATUS  = ""    ' to "UnDisabled" control
  49.     CONST AE_CRITICAL_ALERT = 2
  50.     CONST AE_WARNING_ALERT = 1
  51.     CONST AE_INFORMATION_ALERT = 4
  52.     CONST SMTP_RUNING_STATUS = 2
  53.     CONST SMTP_STOP_STATUS = 4
  54.  
  55.     '-------------------------------------------------------------------------
  56.     ' Form Variables
  57.     '-------------------------------------------------------------------------
  58.     Dim aeEnableAlertEmail
  59.     Dim aeDisableCheck
  60.     Dim aeEnableCheck
  61.     Dim aeDisableAlertEmail
  62.     Dim aeSendEmailType
  63.     Dim aeSendCriticalCheck
  64.     Dim aeSendWarningCheck
  65.     Dim aeSendInforCheck
  66.     Dim aeReceiverEmailAddress 
  67.     Dim aeSmartHost
  68.     Dim aeSmartHostType
  69.     Dim aeEnableDisplaySendInfo
  70.     Dim aeEnableDisplaySendErr
  71.     Dim mstrCHelperPROGID
  72.     Dim mstrRegPathName
  73.     Dim mstrEnableAlertEmailValue
  74.     Dim mstrSendEmailTypeValue
  75.     Dim mstrReceiverEmailAddressValue
  76.  
  77.     '-------------------------------------------------------------------------
  78.     ' Start of localization content
  79.     '-------------------------------------------------------------------------
  80.     Dim L_TASKTITLE_TEXT
  81.     Dim L_ALERTEMAIL_TASK_DESCRIPTION
  82.     Dim L_ALERTEMAIL_DISABLE_SENDING
  83.     Dim L_ALERTEMAIL_ENABLE_SENDING
  84.     Dim L_ALERTEMAIL_SEND_CRITICAL
  85.     Dim L_ALERTEMAIL_SEND_WARNING
  86.     Dim L_ALERTEMAIL_SEND_INFORMATIONAL
  87.     Dim L_ALERTEMAIL_TO
  88.     Dim L_ALERTEMAIL_ERR_NO_TYPE
  89.     Dim L_ALERTEMAIL_ERR_NO_EMAIL_ADDRESS
  90.     Dim L_ALERTEMAIL_ERR_SMART_HOST
  91.     Dim L_ALERTEMAIL_SMART_HOST
  92.     Dim L_ALERTEMAIL_TO_LABLE
  93.     Dim L_ALERTEMAIL_WITH_LABLE
  94.     Dim L_ALERTEMAIL_TEST_INFORMATION
  95.     Dim L_ALERTEMAIL_BUTTON_TEXT
  96.     Dim L_ALERTEMAIL_SETTINGS_ERR_SETTASK    
  97.  
  98.     'init localization
  99.     L_TASKTITLE_TEXT = _
  100.                     GetLocString("alertemailmsg.dll","&H4C000003","")
  101.     L_ALERTEMAIL_TASK_DESCRIPTION = _
  102.                     GetLocString("alertemailmsg.dll","&H4C000004","")
  103.     L_ALERTEMAIL_DISABLE_SENDING = _
  104.                     GetLocString("alertemailmsg.dll","&H4C000005","")
  105.     L_ALERTEMAIL_ENABLE_SENDING = _
  106.                     GetLocString("alertemailmsg.dll", "&H4C000006","")
  107.     L_ALERTEMAIL_SEND_CRITICAL = _
  108.                     GetLocString("alertemailmsg.dll", "&H4C000007","") 
  109.     L_ALERTEMAIL_SEND_WARNING = _
  110.                     GetLocString("alertemailmsg.dll", "&H4C000008","")
  111.     L_ALERTEMAIL_SEND_INFORMATIONAL = _
  112.                     GetLocString("alertemailmsg.dll", "&H4C000009","")
  113.     L_ALERTEMAIL_TO = _
  114.                     GetLocString("alertemailmsg.dll", "&H4C00000A","")
  115.     L_ALERTEMAIL_ERR_NO_TYPE = _
  116.                     GetLocString("alertemailmsg.dll", "&H4C00000F","")
  117.     L_ALERTEMAIL_ERR_NO_EMAIL_ADDRESS= _
  118.                     GetLocString("alertemailmsg.dll", "&H4C000010","")
  119.     L_ALERTEMAIL_ERR_SMART_HOST = _
  120.                     GetLocString("alertemailmsg.dll", "&H4C000011","")
  121.     L_ALERTEMAIL_SMART_HOST = _
  122.                     GetLocString("alertemailmsg.dll", "&H4C000012","")
  123.     L_ALERTEMAIL_TO_LABLE = _
  124.                     GetLocString("alertemailmsg.dll", "&H4C000013","")
  125.     L_ALERTEMAIL_WITH_LABLE = _
  126.                     GetLocString("alertemailmsg.dll", "&H4C000014","")
  127.     L_ALERTEMAIL_TEST_INFORMATION = _
  128.                     GetLocString("alertemailmsg.dll", "&H4C000017","")
  129.     L_ALERTEMAIL_BUTTON_TEXT = _
  130.                     GetLocString("alertemailmsg.dll", "&H4C000018","")
  131.     L_ALERTEMAIL_SETTINGS_ERR_SETTASK = _
  132.                     GetLocString("alertemailmsg.dll", "&H4C00001A","")
  133.                     
  134.                     
  135.     '-------------------------------------------------------------------------
  136.     'END of localization content
  137.     '-------------------------------------------------------------------------
  138.     
  139.     '-------------------------------------------------------------------------
  140.     ' Property Page of Alert Email
  141.     '-------------------------------------------------------------------------
  142.  
  143.     rc = SA_CreatePage( L_TASKTITLE_TEXT, "", PT_PROPERTY, page )
  144.     If ( rc = 0 ) Then
  145.     SA_ShowPage( page )
  146.     End If
  147.         
  148.     Public Function OnInitPage(ByRef PageIn, ByRef EventArg)
  149.         aeEnableDisplaySendInfo = False
  150.         aeEnableDisplaySendErr = False
  151.         mstrCHelperPROGID = "ServerAppliance.SAHelper.1"
  152.         mstrRegPathName = "SOFTWARE\Microsoft\ServerAppliance\AlertEmail\"
  153.         mstrEnableAlertEmailValue="EnableAlertEmail"
  154.         mstrSendEmailTypeValue="SendEmailType"
  155.         mstrReceiverEmailAddressValue="ReceiverEmailAddress"
  156.         
  157.         'Get vars of alert email
  158.         SetVarsFromSystem()
  159.         GetSmartHost()
  160.         
  161.         ' create session object
  162.         Session("aeOldSmartHost") = aeSmartHost
  163.         Session("aeOldSmartHostType") = aeSmartHostType
  164.         OnInitPage = TRUE
  165.     End Function
  166.         
  167.     Public Function OnPostBackPage(ByRef PageIn, ByRef EventArg)
  168.         SetVarsFromForm()
  169.         If mstrMethod = "TEST" Then
  170.             If SMTPIsReady Then 
  171.                 SetSmartHost(False)
  172.                 If TestMailSend Then
  173.                     aeEnableDisplaySendInfo = True
  174.                 Else
  175.                     ' now do nothing
  176.                     aeEnableDisplaySendErr = True
  177.                 End if
  178.             Else
  179.                 aeEnableDisplaySendErr = True
  180.             End if
  181.         End If
  182.         OnPostBackPage = TRUE
  183.     End Function
  184.         
  185.     Public Function OnServePropertyPage(ByRef PageIn, ByRef EventArg)
  186.         Call ServeCommonJavaScript()
  187.         SetInternalVars()
  188. %>
  189.         <input name="EnableAlertEmail" type="hidden">
  190.         <input name="SendEmailType" type="hidden">
  191.         <input name="ReceiverEmailAddress" type="hidden">
  192.         <input name="SmartHost" type="hidden" value>
  193.  
  194.         <TABLE   BORDER=0 CELLSPACING=0 CELLPADDING=0 >
  195.             <TR>
  196.                 <TD class=TasksBody>
  197.                     <INPUT type="RADIO"  class=FormField name="radAlertEmail" value=1 <%=aeDisableCheck%>
  198.                         onClick="EnableSendAlertEmail(false)">
  199.                     </INPUT>
  200.                 </TD>
  201.                 <TD colspan=2 class=TasksBody>
  202.                     <%=L_ALERTEMAIL_DISABLE_SENDING%>
  203.                 </TD>
  204.             </TR>
  205.             <TR>
  206.                 <TD class=TasksBody>
  207.                     <INPUT type="RADIO" class=FormField name="radAlertEmail" value=2  <%=aeEnableCheck%>
  208.                         onClick="EnableSendAlertEmail(true)">
  209.                     </INPUT> 
  210.                 </TD>
  211.                 <TD colspan=2 class=TasksBody>
  212.                     <%=L_ALERTEMAIL_ENABLE_SENDING%>
  213.                 </TD>
  214.             </TR>
  215.             <TR>
  216.                 <TD>
  217.                      
  218.                 </TD>
  219.                 <TD class=TasksBody>
  220.                     <INPUT type="CHECKBOX" class=FormField <%=aeDisableAlertEmail%> name="chkCritical" 
  221.                             <%=aeSendCriticalCheck%>>
  222.                     </INPUT>
  223.                 </TD>
  224.                 <TD class=TasksBody>
  225.                     <%=L_ALERTEMAIL_SEND_CRITICAL%>
  226.                 </TD>
  227.             </TR>
  228.             <TR>
  229.                 <TD>
  230.                      
  231.                 </TD>
  232.                 <TD class=TasksBody>
  233.                     <INPUT type="CHECKBOX" class=FormField <%=aeDisableAlertEmail%> name="chkWarning"
  234.                             <%=aeSendWarningCheck%>>
  235.                     </INPUT>
  236.                 </TD>
  237.                 <TD class=TasksBody>
  238.                     <%=L_ALERTEMAIL_SEND_WARNING%>
  239.                 </TD>
  240.             </TR>
  241.             <TR>
  242.                 <TD>
  243.                      
  244.                 </TD>
  245.                 <TD class=TasksBody>
  246.                     <INPUT type="CHECKBOX" class=FormField <%=aeDisableAlertEmail%> name="chkInformational"
  247.                             <%=aeSendInforCheck%>>
  248.                     </INPUT>
  249.                 </TD>
  250.                 <TD class=TasksBody>
  251.                     <%=L_ALERTEMAIL_SEND_INFORMATIONAL%>
  252.                 </TD>
  253.             </TR>
  254.             <TR><td></td><td></td><td><table cellpadding=0 cellspacing=0><tr>
  255.                 <TD class=TasksBody>
  256.                     <%=L_ALERTEMAIL_TO%>
  257.                 </TD>
  258.                 <TD class=TasksBody>
  259.                     <INPUT type="TEXT" class=FormField name="txtTargetMailAdress" style="WIDTH:200px"
  260.                         <%=aeDisableAlertEmail%> value="<%=aeReceiverEmailAddress%>">
  261.                     </INPUT>
  262.                 </TD>
  263.                 <TD noWrap class=TasksBody>
  264.                 <%=L_ALERTEMAIL_TO_LABLE%>
  265.                 </TD>
  266.             </TR>
  267.             <TR>
  268.                 <TD class=TasksBody><%=L_ALERTEMAIL_SMART_HOST%></TD>
  269.                 <TD class=TasksBody>
  270.                     <INPUT type="TEXT" class=FormField name="txtSmartHost" style="WIDTH:200px"
  271.                            <%=aeDisableAlertEmail%> value="<%=aeSmartHost%>">
  272.                     </INPUT>
  273.                 </TD>
  274.                 <TD noWrap class=TasksBody>
  275.                 <%=L_ALERTEMAIL_WITH_LABLE%>
  276.                 </TD>
  277.             </TR><TR><TD> </TD></TR>
  278.             <TR>
  279.                 <TD colspan=4 class=TasksBody>
  280.                 <!--    <INPUT type="BUTTON" class=TaskFrameButtons name="btnTest" style="WIDTH:100px" <%=aeDisableAlertEmail%>
  281.                         value="<%=L_ALERTEMAIL_BUTTON_TEXT%>" onClick="ClickTest()">
  282.                     </INPUT> -->
  283.             <% Call SA_ServeOnClickButtonEx(L_ALERTEMAIL_BUTTON_TEXT, "", "ClickTest()", 0, 0, aeDisableAlertEmail,"btnTest") %>
  284.                 </TD>
  285.             </TR></table></td></tr>
  286.         </TABLE>
  287. <%        
  288.         OnServePropertyPage = TRUE
  289.     End Function
  290.  
  291.     Public Function OnSubmitPage(ByRef PageIn, ByRef EventArg)
  292.         If SetAlertEmail Then
  293.             Session("aeOldSmartHost") =""
  294.             OnSubmitPage = TRUE
  295.         Else
  296.             OnSubmitPage = FALSE
  297.         End If
  298.     End Function
  299.         
  300.     Public Function OnClosePage(ByRef PageIn, ByRef EventArg)
  301.         If mstrMethod = "CANCEL" Then
  302.             SetSmartHost(True)
  303.         End If
  304.         'close all session
  305.         Session.Contents.Remove("aeOldSmartHost")
  306.         Session.Contents.Remove("aeOldSmartHostType")
  307.         OnClosePage = TRUE
  308.     End Function
  309.  
  310.     Function ServeCommonJavaScript()
  311. %>
  312.     <script language="JavaScript" src="<%=m_VirtualRoot%>inc_global.js">
  313.     </script>
  314.     <script language="JavaScript">
  315.         function Init()
  316.         {
  317.         <%If aeEnableDisplaySendErr Then%>
  318.             DisplayErr("<%=Server.HTMLEncode(L_ALERTEMAIL_ERR_SMART_HOST)%>");
  319.         <%Else
  320.             If aeEnableDisplaySendInfo Then%>
  321.                 DisplayMsg("<%=Server.HTMLEncode(L_ALERTEMAIL_TEST_INFORMATION)%>");
  322.             <%End If%>
  323.         <%End If%>
  324.         }
  325.  
  326.         function ValidatePage()
  327.         {
  328.             var bFindInvalidChar;
  329.             var RadioSelected = null;
  330.             var SendType = 0;
  331.             var InvalidChar;
  332.             for(var i =0; i < document.frmTask.radAlertEmail.length; i++)
  333.              { 
  334.                 if(document.frmTask.radAlertEmail[i].checked)
  335.                 {
  336.                       RadioSelected = document.frmTask.radAlertEmail[i].value;
  337.                       break;
  338.                 }
  339.             }
  340.                 
  341.             if(RadioSelected == 1)
  342.             {
  343.                 return true;
  344.             }
  345.                 
  346.             // will check the selected items
  347.             do
  348.             {
  349.                 if(document.frmTask.chkCritical.checked)
  350.                 {
  351.                     SendType+=2;
  352.                     break;
  353.                 }
  354.                 else if(document.frmTask.chkWarning.checked)
  355.                 {
  356.                     SendType+=1;
  357.                     break;
  358.                 }
  359.                 else if(document.frmTask.chkInformational.checked)
  360.                 {
  361.                     SendType+=4;
  362.                     break;
  363.                 }
  364.             }
  365.             while(false);
  366.  
  367.             if(SendType == 0)
  368.             {
  369.                 DisplayErr("<%=Server.HTMLEncode(L_ALERTEMAIL_ERR_NO_TYPE)%>");
  370.                 document.frmTask.chkCritical.focus();
  371.                 return false;
  372.             }
  373.             if(document.frmTask.txtTargetMailAdress.value == "")
  374.             {
  375.                 DisplayErr("<%=Server.HTMLEncode(L_ALERTEMAIL_ERR_NO_EMAIL_ADDRESS)%>");
  376.                 document.frmTask.txtTargetMailAdress.focus();
  377.                 return false;
  378.             }
  379.             else
  380.             {
  381.                 InvalidChar = /[^ ]/g;
  382.                 bFindInvalidChar = document.frmTask.txtTargetMailAdress.
  383.                                 value.match(InvalidChar);
  384.                 if(!bFindInvalidChar)
  385.                 {
  386.                     DisplayErr("<%=Server.HTMLEncode(L_ALERTEMAIL_ERR_NO_EMAIL_ADDRESS)%>");
  387.                     document.frmTask.txtTargetMailAdress.value = "";
  388.                     document.frmTask.txtTargetMailAdress.focus();
  389.                     return false;
  390.                 }
  391.             }
  392.             return true;
  393.         }
  394.  
  395.         function SetData()
  396.         {
  397.             var SearchedChar, pos;
  398.             var RadioSelected = null;
  399.             var SendType = 0;
  400.  
  401.             document.frmTask.SmartHost.value=
  402.                         document.frmTask.txtSmartHost.value;
  403.                 
  404.             for(var i =0; i < document.frmTask.radAlertEmail.length; i++)
  405.              { 
  406.                 if(document.frmTask.radAlertEmail[i].checked)
  407.                 {
  408.                   RadioSelected = document.frmTask.radAlertEmail[i].value;
  409.                   break;
  410.                 }
  411.             }
  412.                 
  413.             if(RadioSelected == 1)
  414.             {
  415.                 document.frmTask.EnableAlertEmail.value=0x00000000;
  416.             }
  417.             else
  418.             {
  419.                 document.frmTask.EnableAlertEmail.value=0xFFFFFFFF;
  420.             }
  421.                 
  422.             // will check the selected items
  423.             if(document.frmTask.chkCritical.checked)
  424.             {
  425.                 SendType+=2;
  426.             }
  427.             if(document.frmTask.chkWarning.checked)
  428.             {
  429.                 SendType+=1;
  430.             }
  431.             if(document.frmTask.chkInformational.checked)
  432.             {
  433.                 SendType+=4;
  434.             }
  435.  
  436.             document.frmTask.SendEmailType.value=SendType;
  437.                 
  438.             SearchedChar = /[^ ]/g;
  439.             pos=document.frmTask.txtTargetMailAdress.value.
  440.                 search(SearchedChar);
  441.  
  442.             document.frmTask.ReceiverEmailAddress.value=
  443.                     document.frmTask.txtTargetMailAdress.value.substr(pos);
  444.         }
  445.             //update hiden form and submit data to ASP server
  446.             function ClickTest()
  447.             {
  448.                 if(ValidatePage())
  449.                 {
  450.                     SetData();
  451.                     document.frmTask.Method.value = "TEST";
  452.                     document.frmTask.submit();
  453.                 }
  454.             }
  455.         
  456.         //-----------------------------------------------------------------
  457.         //SubRoutine name:    EnableSendAlertEmail
  458.         //Description:        tab between enable and disable send alert email
  459.         //Input Variables:    BOOLEAN
  460.         //Output Variables:    None
  461.         //Returns:            None
  462.         //Global Variables:    None
  463.         //-----------------------------------------------------------------
  464.         function EnableSendAlertEmail(bSend)
  465.         {
  466.             var SendType = 0;
  467.             if(bSend)
  468.             {
  469.                 document.frmTask.chkCritical.disabled = false;
  470.                 document.frmTask.chkWarning.disabled = false;
  471.                 document.frmTask.chkInformational.disabled = false;
  472.                 document.frmTask.txtTargetMailAdress.disabled = false;
  473.                 document.frmTask.txtSmartHost.disabled = false;
  474.                 document.frmTask.btnTest.disabled = false;
  475.                 // If no select in checkbox, set critical as default
  476.                 do
  477.                 {
  478.                     if(document.frmTask.chkCritical.checked)
  479.                     {
  480.                         SendType+=2;
  481.                         break;
  482.                     }
  483.                     else if(document.frmTask.chkWarning.checked)
  484.                     {
  485.                         SendType+=1;
  486.                         break;
  487.                     }
  488.                     else if(document.frmTask.chkInformational.checked)
  489.                     {
  490.                         SendType+=4;
  491.                         break;
  492.                     }
  493.                 }
  494.                 while(false);
  495.                 if(SendType==0)
  496.                     document.frmTask.chkCritical.checked = true;
  497.             }
  498.             else
  499.             {
  500.                 document.frmTask.chkCritical.disabled = true;
  501.                 document.frmTask.chkWarning.disabled = true;
  502.                 document.frmTask.chkInformational.disabled = true;
  503.                 document.frmTask.txtTargetMailAdress.disabled = true;
  504.                 document.frmTask.txtSmartHost.disabled = true;
  505.                 document.frmTask.btnTest.disabled = true;
  506.             }
  507.         }
  508.         //--------------------------------------------------------------------
  509.         //
  510.         // Function : DisplayMsg
  511.         //
  512.         // Synopsis : Display msg
  513.         //
  514.         // Arguments: Msg(IN) - msg to display
  515.         //
  516.         // Returns  : None
  517.         //
  518.         //--------------------------------------------------------------------
  519.  
  520.         function DisplayMsg(Msg) 
  521.         {
  522.             var strMsg = '<table style="font-family:tahoma,arial,verdana,'+
  523.                         'sans-serif;font-size:9pt;font-weight: normal;">'+
  524.                         '<tr><td><img src="' + VirtualRoot + 
  525.                         'images/information.gif" border=0></td><td>' + Msg + 
  526.                         '</td></tr></table>'
  527.             if (IsIE())
  528.             {
  529.                 document.all("divErrMsg").innerHTML = strMsg;
  530.             }
  531.             else 
  532.             {
  533.                 alert(Msg);
  534.             }
  535.         }
  536.     </script>
  537. <%
  538.     End Function
  539.     
  540.     '-------------------------------------------------------------------------
  541.     '
  542.     ' Function : SetAlertEmail
  543.     '
  544.     ' Synopsis : function to set server alert email
  545.     '
  546.     ' Arguments: None
  547.     '
  548.     ' Returns  : None
  549.     '
  550.     '-------------------------------------------------------------------------
  551.  
  552.     Function SetAlertEmail()
  553.         Dim objTCtx
  554.         Dim Error
  555.  
  556.         on error resume next
  557.         
  558.         Error = ExecuteTask("SetAlertEmail", objTCtx)
  559.         
  560.         if Error <> 0 then
  561.             SetErrMsg L_ALERTEMAIL_SETTINGS_ERR_SETTASK 
  562.             SetAlertEmail = False
  563.         Else
  564.             SetSmartHost(False)
  565.             SetAlertEmail = True
  566.         End if
  567.  
  568.         set objTCtx = Nothing
  569.     End Function
  570.  
  571.     '-------------------------------------------------------------------------
  572.     ' Subprocedure name:SetVarsFromSystem
  573.     ' Description:        Serves in getting the values from system
  574.     ' Input Variables:    None
  575.     ' Output Variables:    None
  576.     ' Returns:            None
  577.     ' Global Variables: Out: aeEnableAlertEmail - alert email
  578.     '                    Out: aeSendEmailType - send email type
  579.     '                    Out: aeReceiverEmailAddress - receiver email address
  580.     '-------------------------------------------------------------------------
  581.     Sub SetVarsFromSystem
  582.         Dim objHelper
  583.         Err.Clear
  584.  
  585.         '---------------------------------------------------------------------
  586.         'Get old parameter from registry
  587.         '---------------------------------------------------------------------
  588.         Set objHelper = Server.CreateObject(mstrCHelperPROGID)
  589.         If Err.Number <> 0 Then
  590.             aeEnableAlertEmail = 0
  591.             aeSendEmailType = 0
  592.             aeReceiverEmailAddress = ""
  593.         Else
  594.             Call objHelper.GetRegistryValue(mstrRegPathName, _
  595.                                             mstrEnableAlertEmailValue, _
  596.                                             aeEnableAlertEmail, _
  597.                                             mintVT_I4_REG_DWORD)
  598.             Call objHelper.GetRegistryValue(mstrRegPathName, _
  599.                                             mstrSendEmailTypeValue,_
  600.                                             aeSendEmailType, _
  601.                                             mintVT_I4_REG_DWORD)
  602.             Call objHelper.GetRegistryValue(mstrRegPathName, _
  603.                                             mstrReceiverEmailAddressValue,_
  604.                                             aeReceiverEmailAddress, _
  605.                                             mintVT_BSTR_REG_SZ)
  606.         End if
  607.         Set objHelper = Nothing    
  608.     End Sub
  609.  
  610.     '-------------------------------------------------------------------------
  611.     ' Subprocedure name:SetVarsFromForm
  612.     ' Description:        Serves in getting the values from client
  613.     ' Input Variables:    None
  614.     ' Output Variables:    None
  615.     ' Returns:            None
  616.     ' Global Variables: Out: aeEnableAlertEmail - alert email
  617.     '                    Out: aeSendEmailType - send email type
  618.     '                    Out: aeReceiverEmailAddress - receiver email address
  619.     '                    Out: aeSmartHost - Smart host of SMTP server
  620.     '-------------------------------------------------------------------------
  621.     Sub SetVarsFromForm
  622.         aeEnableAlertEmail = Request.Form("EnableAlertEmail")
  623.         aeSendEmailType =  Request.Form("SendEmailType")
  624.         aeReceiverEmailAddress = Request.Form("ReceiverEmailAddress")
  625.         aeSmartHost = Trim(Request.Form("SmartHost"))
  626.     End Sub
  627.  
  628.     '-------------------------------------------------------------------------
  629.     ' Subprocedure name:SetInternalVars
  630.     ' Description:        Serves internal variables
  631.     ' Input Variables:    None
  632.     ' Output Variables:    None
  633.     ' Returns:            None
  634.     ' Global Variables: Out: aeEnableAlertEmail - alert email
  635.     '                    Out: aeSendEmailType - send email type
  636.     '                    Out: aeReceiverEmailAddress - receiver email address
  637.     '                    Out: aeSmartHost - Smart host of SMTP server
  638.     '-------------------------------------------------------------------------
  639.     Sub SetInternalVars
  640.         aeSendCriticalCheck = CONST_CONTROL_NOT_CHECKED_STATUS
  641.         aeSendWarningCheck = CONST_CONTROL_NOT_CHECKED_STATUS
  642.         aeSendInforCheck = CONST_CONTROL_NOT_CHECKED_STATUS
  643.  
  644.         If aeEnableAlertEmail Then
  645.             aeDisableCheck = CONST_CONTROL_NOT_CHECKED_STATUS
  646.             aeEnableCheck = CONST_CONTROL_CHECKED_STATUS
  647.             aeDisableAlertEmail = CONST_CONTROL_NOT_DISABLE_STATUS
  648.         Else
  649.             aeDisableCheck = CONST_CONTROL_CHECKED_STATUS
  650.             aeEnableCheck = CONST_CONTROL_NOT_CHECKED_STATUS
  651.             aeDisableAlertEmail = CONST_CONTROL_DISABLE_STATUS
  652.         End if
  653.         If aeSendEmailType and AE_CRITICAL_ALERT Then
  654.             aeSendCriticalCheck = CONST_CONTROL_CHECKED_STATUS
  655.         End if
  656.         If aeSendEmailType and AE_WARNING_ALERT Then
  657.             aeSendWarningCheck = CONST_CONTROL_CHECKED_STATUS
  658.         End if
  659.         If aeSendEmailType and AE_INFORMATION_ALERT Then
  660.             aeSendInforCheck = CONST_CONTROL_CHECKED_STATUS
  661.         End if
  662.     End Sub
  663.  
  664.  
  665.     '-------------------------------------------------------------------------
  666.     '
  667.     ' Function : SetSmartHost
  668.     '
  669.     ' Synopsis : function to set smart host
  670.     '
  671.     ' Arguments: 
  672.     '            Boolean(IN): True - restore old vale
  673.     '                         False - save with new value
  674.     '
  675.     ' Returns  : None
  676.     '
  677.     '-------------------------------------------------------------------------
  678.  
  679.     Function SetSmartHost(bOld)
  680.         Dim dso
  681.         Dim objAds,tempSmartHost
  682.  
  683.         Call SA_TraceOut("SH_ALERTEMAIL", "Entering SetSmartHost")
  684.  
  685.         Err.Clear
  686.         on error resume next
  687.             Set dso = GetObject("IIS:")
  688.  
  689.         If Err.Number <> 0 Then
  690.             Call SA_TraceOut("SH_ALERTEMAIL", _
  691.                             "GetObject(IIS:) encountered error: "& _
  692.                             CStr(Hex(Err.Number))& " "&Err.Description)
  693.             SetSmartHost = False
  694.             Exit Function
  695.         Else
  696.             Set objAds = dso.OpenDSObject(_
  697.                         "IIS://localhost/SmtpSvc/1",_
  698.                         "",_
  699.                         "",_
  700.                         ADS_SECURE_AUTHENTICATION)
  701.             If Err.Number <> 0 Then
  702.                 Call SA_TraceOut("SH_ALERTEMAIL", _
  703.                             "dso.OpenDSObject encountered error: "& _
  704.                             CStr(Hex(Err.Number))&" "& Err.Description)
  705.                 SetSmartHost = False
  706.                 Exit Function
  707.             Else
  708.                 if bOld Then
  709.                     objAds.Put "SmartHost", Session("aeOldSmartHost")
  710.                     objAds.Put "SmartHostType", Session("aeOldSmartHostType")
  711.                 Else
  712.                     tempSmartHost = Request.form("SmartHost")
  713.                     ' Add breckets to the ip address
  714.                     If IsIPAddress(tempSmartHost) Then
  715.                         tempSmartHost = "["&tempSmartHost&"]"
  716.                     End if
  717.                     objAds.Put "SmartHost", tempSmartHost
  718.                     '
  719.                     ' According to the old start host config, determine the 
  720.                     ' value of smarthosttype
  721.                     '
  722.                     If tempSmartHost = "" Then
  723.                         objAds.Put "SmartHostType", 0
  724.                     Else
  725.                         If Session("aeOldSmartHostType") = 1 Then
  726.                             objAds.Put "SmartHostType", 1
  727.                         Else
  728.                             objAds.Put "SmartHostType", 2
  729.                         End if
  730.                     End if
  731.                 End if
  732.                 objAds.SetInfo
  733.                 SetSmartHost = True
  734.             End if
  735.         End if
  736.  
  737.         If Err.Number <> 0 Then
  738.             Call SA_TraceOut("SH_ALERTEMAIL", _
  739.                             "SetSmartHost encountered error: "& _
  740.                             CStr(Hex(Err.Number))&" "&Err.Description)
  741.         End If
  742.  
  743.         Set dso = Nothing
  744.         Set objAds = Nothing
  745.     End Function
  746.  
  747.     '-------------------------------------------------------------------------
  748.     '
  749.     ' Function : GetSmartHost
  750.     '
  751.     ' Synopsis : function to get smart host
  752.     '
  753.     ' Arguments: None
  754.     '
  755.     ' Returns  : None
  756.     '
  757.     '-------------------------------------------------------------------------
  758.  
  759.     Function GetSmartHost()
  760.         Dim dso
  761.         Dim objAds
  762.  
  763.         Err.Clear
  764.         on error resume next
  765.         Set dso = GetObject("IIS:")
  766.         If Err.Number <> 0 Then
  767.             GetSmartHost = False
  768.         Else
  769.             Set objAds = dso.OpenDSObject(_
  770.                         "IIS://localhost/SmtpSvc/1",_
  771.                         "",_
  772.                         "",_
  773.                         ADS_SECURE_AUTHENTICATION)
  774.             If Err.Number <> 0 Then
  775.                 GetSmartHost = False
  776.             Else
  777.                 aeSmartHost = objAds.Get("SmartHost")
  778.                 'If is IP address, throw off breackets
  779.                 If IsBracketsIPAddress(aeSmartHost) Then
  780.                     aeSmartHost=Mid(aeSmartHost,2,Len(aeSmartHost)-2)
  781.                 End if
  782.                 'Get the type of the smart host
  783.                 aeSmartHostType = objAds.Get("SmartHostType")
  784.                 GetSmartHost = True
  785.             End if
  786.         End if
  787.  
  788.         Set dso = Nothing
  789.         Set objAds = Nothing
  790.     End Function
  791.  
  792.     '-------------------------------------------------------------------------
  793.     '
  794.     ' Function : SMTPIsReady
  795.     '
  796.     ' Synopsis : function to determine the state of SMTP server
  797.     '
  798.     ' Arguments: None
  799.     '
  800.     ' Returns  : BOOL
  801.     '
  802.     '-------------------------------------------------------------------------
  803.  
  804.     Function SMTPIsReady()
  805.         Dim dso
  806.         Dim objAds
  807.         Dim smtpState
  808.  
  809.         Err.Clear
  810.         on error resume next
  811.  
  812.         SMTPIsReady = True
  813.         Set dso = GetObject("IIS:")
  814.         If Err.Number <> 0 Then
  815.             SMTPIsReady = False
  816.             Exit Function
  817.         Else
  818.             Set objAds = dso.OpenDSObject(_
  819.                         "IIS://localhost/SmtpSvc/1",_
  820.                         "",_
  821.                         "",_
  822.                         ADS_SECURE_AUTHENTICATION)
  823.             If Err.Number <> 0 Then
  824.                 'Not exist the service of SMTP
  825.                 SMTPIsReady = False
  826.                 Exit Function
  827.             Else
  828.                 smtpState = objAds.Get("ServerState")
  829.                 'If the smtp is stop display errinfo
  830.                 If smtpState = SMTP_STOP_STATUS Then
  831.                     SMTPIsReady = False
  832.                     Exit Function
  833.                 End if
  834.             End if
  835.         End if
  836.  
  837.         Set dso = Nothing
  838.         Set objAds = Nothing
  839.     End Function
  840.  
  841.     '-------------------------------------------------------------------------
  842.     '
  843.     ' Function : TestMailSend
  844.     '
  845.     ' Synopsis : Test the email settings
  846.     '
  847.     ' Arguments: None
  848.     '
  849.     ' Returns  : None
  850.     '
  851.     '-------------------------------------------------------------------------
  852.  
  853.     Function TestMailSend()
  854.         Dim iMsg
  855.         Dim iConf
  856.         Dim comHelper
  857.         Dim iComputer
  858.         Dim iNow
  859.         Dim msgBody
  860.         Dim strFrom
  861.  
  862.         Err.Clear
  863.         on error resume next
  864.  
  865.         Call SA_TraceOut("SH_ALERTEMAIL", "Entering TestMailSend")
  866.  
  867.         Set iMsg = CreateObject("CDO.Message")
  868.         If Err.Number <> 0 Then
  869.             Call SA_TraceOut("SH_ALERTEMAIL", _
  870.                             "CreateObject(CDO.Message) encountered error: "& _
  871.                             CStr(Hex(Err.Number))&" "&Err.Description)
  872.             TestMailSend = False
  873.             Exit Function
  874.         Else
  875.             Set iConf = CreateObject("CDO.Configuration")
  876.             If Err.Number <> 0 Then
  877.                 TestMailSend = False
  878.                 Call SA_TraceOut("SH_ALERTEMAIL", _
  879.                         "CreateObject(CDO.Configuration) encountered error: "& _
  880.                         CStr(Hex(Err.Number))&" "&Err.Description)
  881.                 Exit Function
  882.             Else
  883.                 iConf.Load cdoIIS
  884.                 Set comHelper = Server.CreateObject("comhelper.SystemSetting")
  885.                 If Err.Number <> 0 Then
  886.                     TestMailSend = False
  887.                     Call SA_TraceOut("SH_ALERTEMAIL", _
  888.                         "Server.CreateObject(comhelper.SystemSetting) error: "& _
  889.                         CStr(Hex(Err.Number))&" "&Err.Description)
  890.                     Exit Function
  891.                 Else
  892.                     Set iComputer = comHelper.Computer
  893.                     If Err.Number <> 0 Then
  894.                         TestMailSend = False
  895.                         Call SA_TraceOut("SH_ALERTEMAIL", _
  896.                             "comHelper.Computer encountered error: "& _
  897.                             CStr(Hex(Err.Number))&" "&Err.Description)
  898.                         Exit Function
  899.                     Else
  900.                         iNow = Now
  901.                         msgBody = SA_GetLocString("alertemailmsg.dll", _
  902.                                         "&H4C000016",_
  903.                                         Array(UCase(iComputer.FullQualifiedComputerName)))
  904.  
  905.                         strFrom = GetFromAddressForAlertEmail(iComputer)
  906.  
  907.                         With iMsg
  908.                           Set.Configuration = iConf
  909.                               .To       = aeReceiverEmailAddress
  910.                               .From     = strFrom
  911.                               .Subject  = SA_GetLocString("alertemailmsg.dll", _
  912.                                             "&H4C000015", _
  913.                                             Array(CStr(iNow)))
  914.                               .BodyPart.Charset = SA_GetCharSet()                
  915.                               .TextBody = msgBody
  916.                               .Send
  917.                         End With
  918.                         If Err.Number <> 0 Then
  919.                             TestMailSend = False
  920.                             Call SA_TraceOut("SH_ALERTEMAIL", _
  921.                                     "Set.Configuration encountered error: "& _
  922.                                     CStr(Hex(Err.Number))&" "&Err.Description)
  923.                         Else
  924.                             TestMailSend = True
  925.                         End if
  926.                     End if
  927.                 End if
  928.             End if
  929.         End If
  930.  
  931.         Set comHelper = Nothing
  932.         Set iComputer = Nothing
  933.         Set iMsg = Nothing
  934.         Set iConf = Nothing
  935.     End Function
  936.  
  937.     '-------------------------------------------------------------------------
  938.     '
  939.     ' Function : IsIPAddress
  940.     '
  941.     ' Synopsis : Is a dot IP address?
  942.     '
  943.     ' Arguments: ipstring - the string is analysed
  944.     '
  945.     ' Returns  : BOOL
  946.     '
  947.     '-------------------------------------------------------------------------
  948.  
  949.     Function IsIPAddress(ipstring)
  950.         Dim FiledUperBound
  951.         Dim FieldArray,LoopIndex
  952.  
  953.         LoopIndex = 0
  954.         IsIPAddress = True
  955.         FieldArray = Split(ipstring, ".")
  956.         FiledUperBound = UBound(FieldArray)
  957.  
  958.         if FiledUperBound = 3 Then
  959.             Do while LoopIndex < 4
  960.                 If not IsNumeric(FieldArray(LoopIndex)) Then
  961.                     IsIPAddress = False
  962.                     Exit Do
  963.                 End if
  964.                 LoopIndex = LoopIndex + 1
  965.             Loop
  966.         Else
  967.             IsIPAddress = False
  968.         End if
  969.     End Function
  970.  
  971.     '-------------------------------------------------------------------------
  972.     '
  973.     ' Function : IsBracketsIPAddress
  974.     '
  975.     ' Synopsis : Is a dot IP address in brackets?
  976.     '
  977.     ' Arguments: ipstring - the string is analysed
  978.     '
  979.     ' Returns  : BOOL
  980.     '
  981.     '-------------------------------------------------------------------------
  982.     Function IsBracketsIPAddress(ipstring)
  983.         IsBracketsIPAddress = False
  984.         If Left(ipstring,1) = "[" and Right(ipstring, 1) = "]" Then
  985.             If IsIPAddress(Mid(ipstring,2,Len(ipstring)-2)) Then
  986.                 IsBracketsIPAddress = True
  987.             End if
  988.         End if
  989.     End Function
  990.     
  991.     '-------------------------------------------------------------------------
  992.     '
  993.     ' Function : GetFromAddressForAlertEmail()
  994.     '
  995.     ' Synopsis : Get From Address
  996.     '
  997.     ' Arguments: NULL
  998.     '
  999.     ' Returns  : INT
  1000.     '
  1001.     '-------------------------------------------------------------------------
  1002.  
  1003.     Function GetFromAddressForAlertEmail( objComputer )
  1004.  
  1005.         Err.Clear
  1006.         On Error Resume Next
  1007.  
  1008.         Dim strFullyQualifiedComputerName
  1009.  
  1010.         strFullyQualifiedComputerName = objComputer.FullQualifiedComputerName
  1011.  
  1012.         SA_Traceout "strFullyQualifiedComputerName:", strFullyQualifiedComputerName
  1013.  
  1014.         GetFromAddressForAlertEmail = GetComputerName()
  1015.         
  1016.         Dim objADSI
  1017.         Dim strDomainName
  1018.         
  1019.         ' The algorithm is
  1020.         '   Look at the value of "Full Qualified Domain Name" entry in SMTP Delivery tab in MMC.
  1021.         '   1) If the value is empty then the e-mail From Address is appliance_name
  1022.         '  2) If it is NOT empty use the From Address as appliance_name@"Full Qualified Domain Name"
  1023.     
  1024.             
  1025.  
  1026.         Set objADSI = GetObject( "IIS://LOCALHOST/SMTPSVC/1")
  1027.         If Err.Number <> 0 Then
  1028.             SA_TraceOut "sh_alertemail.asp", " failed to call GetObject"
  1029.             Exit Function
  1030.         End If
  1031.  
  1032.         ' Getting the FullyQualifiedDomainName property 
  1033.         strDomainName = objADSI.Get("FullyQualifiedDomainName")         
  1034.         If Err.Number <> 0 Then
  1035.             SA_TraceOut "sh_alertemail.asp", " failed to call Get property on FullyQualifiedDomainName"
  1036.             Exit Function
  1037.         End If
  1038.         
  1039.         If lcase( strDomainName) <> lcase(strFullyQualifiedComputerName) Then
  1040.             GetFromAddressForAlertEmail = GetComputerName() + "@" + strDomainName
  1041.             
  1042.         End If
  1043.  
  1044.  
  1045.     
  1046.     End Function
  1047. %>
  1048.